package Constraints.Impl;

import Constraints.IConstraint;
import Core.ErrorMessage;
import Model.Draw.Entities.ObjectDraw;
import Model.Draw.ICommunicatorDraw;
import java.util.ArrayList;
import java.util.List;

/**
 * Projeto de TCC: Editor de Diagramas de comunicação BlueJ
 * @author Jose
 */
public class LinkConstraint implements IConstraint {

    @Override
    public List<ErrorMessage> Validate(Object obj) {
        List<ErrorMessage> errors = new ArrayList<ErrorMessage>();
        List<Object> elements = (List<Object>) obj;
        
        try {
            ICommunicatorDraw sourceElement = (ICommunicatorDraw) elements.get(0);
        } catch (Exception e) {
            errors.add(new ErrorMessage("LinkEntity", "A ligação que você está criando não está vinculado a nenhuma entidade de ORIGEM válida.(Entidades de ORIGEM válidas são Ator e Objeto)"));
        }

        if (elements.size() >= 2) {
            try {
                ObjectDraw targetElement = (ObjectDraw) elements.get(1);
            } catch (Exception e) {
                errors.add(new ErrorMessage("LinkEntity", "A ligação que você está criando não está vinculado a nenhuma entidade de DESTINO válida.(Entidade de DESTINO válida é somente Objeto)"));
            }
        }
        return errors.isEmpty() ? null : errors;
    }
}
